Windows端 + Linux端代理爬虫暗网数据

环境搭建

本来只做了Windows环境的搭建,但在后期推送发现,家里Windows电脑还是不如Linux稳定,由于windows还需要配置墙,于是又使用了国外vps Linux环境进行推送。

Window环境

这里用的家里电脑 Windows系统,正巧看到之前github有类似win10环境搭建的项目,就学习了。

需要几个工具如下:

  • cow
  • tor
  • vidalia

tor 可以去官网下载:https://www.torproject.org/download/download 选择Expert Bundle
其他两项根据github提供的链接下载的。

这里详细的配置我就不贴图了,有需要的朋友可以去下面这个链接查看详细教程:

https://github.com/gzm1997/shadow_spider

代理的路线如下:

这里使用ss做翻墙,然后tor代理到9050,之前很多人提到tor的socks5协议下requests使用存在问题,使用的urllib等,然后参考github博客的推荐使用cow转换协议,然后代码还是用了requests包

最后就通过burp代理了http端口,看了下暗网数据的访问过程,提取数据还算方便,在处理cookie的问题上还是遇到一些小坑。

Linux环境

需要的工具如下:

  • tor
  • privoxy
安装tor
1
sudo apt-get install tor

启动tor

1
sudo service tor start

这里我用的是国外vps,不需要配置ss来进行翻墙。如果国内的话,还需要配合ss启动

1
tor Socks5Proxy 127.0.0.1:1080

Tor监听9050端口(Socks)

生成HashedControlPassword

1
tor --hash-password mypassword

然后编辑Tor的配置文件(/etc/tor/torrc):

开启ControlPort,这是其它应用(python-stem)和Tor沟通的端口:

1
ControlPort 9051

开启cookie认证:

CookieAuthentication 1

如下:

然后重启Tor

安装Privoxy

Privoxy 和 上面Windows下的Cow类似,Tor本身不是HTTP代理,需要使用Privoxy作为Tor的HTTP代理

1
sudo apt-get install privoxy

配置Privoxy:

1
sudo vim /etc/privoxy/config

添加forward-socks5:

1
forward-socks5   /               127.0.0.1:9050 .

重启Privoxy

1
sudo service privoxy restart

privoxy默认监听8118端口,它把http请求转向到Tor的9050端口。

另外在这里又看到两种方法可以不转换协议来请求。

安装socks

1
pip install PySocks

使用requests

1
2
3
4
5
6
7
import socket
import socks
import requests

socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 9050)
socket.socket = socks.socksocket
print(requests.get('http://api.ipify.org?format=json').text)

使用requesocks

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import os
import requests
import requesocks
import time

url = 'http://api.ipify.org?format=json'


def getip_requests(url):
print "(+) Sending request with plain requests..."
r = requests.get(url)
print "(+) IP is: " + r.text.replace("\n", "")

def getip_requesocks(url):
print "(+) Sending request with requesocks..."
session = requesocks.session()
session.proxies = {'http': 'socks5://127.0.0.1:9050',
'https': 'socks5://127.0.0.1:9050'}
r = session.get(url)
print "(+) IP is: " + r.text.replace("\n", "")

数据获取

代码涉敏暂不公布

暗网数据如下:

通过脚本做定时抓取,每天进行推送,后期考虑做个web平台用来推送数据分析归纳等

只提取了一些数据词条,未放入超链,考虑到超链一般也无法打开,内容如下:

写在最后

好久没更博了,很惭愧。前几天去看Teag1e的博客,发现写了很多漏洞挖掘的姿势,已经有段时间没有去挖掘漏洞了,不知不觉2018就剩这么几天了。感觉有好多东西要学,好多事情想做,却停在原点。算了,最近再写个2018记吧,拜拜

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!